The VC1 video standard (i.e., as defined by SMPTE 421M) includes intensity compensation on frames before motion compensation occurs. The intensity compensation is defined to occur in place (i.e., stored back into the same memory buffer) Subsequent references to the same frame using intensity compensation apply the new intensity compensation to the results of the previous intensity compensation. FIG. 1 shows a conventional system where the flow and structure for decoding of VC1 inter macroblocks is implemented without intensity compensation. FIG. 2 shows a conventional system with the addition of intensity compensation.
One conventional approach for intensity compensation is provided by the VC1 reference software. The pre-intensity compensation (i.e., multiply, add, scale, and clip) is applied to an entire reference frame before motion compensation. In a software implementation, which is typically implemented in a computer bound by predetermined multiples, the overall number of multiply operations are reduced as motion compensation input data includes extra pixels for interpolation.
The disadvantages of such a system includes issues such as that during intensity compensation, no other task can be implemented simultaneously. Such an implementation wastes dedicated resources if a hardware implementation is used. The bandwidth of the intensity compensation (read and write) also adds to the overall memory bandwidth.
It would be desirable to implement a real time intensity compensation system that allows motion compensation to occur simultaneously with intensity compensation.